Skip to main content

Cookies

Cookies in Selenium manage session data, authentication tokens, and user preferences across browser sessions.


1. Adding Cookies​

// Add single cookie
Cookie cookie = new Cookie("sessionId", "abc123");
driver.manage().addCookie(cookie);

// Add multiple cookies
Cookie userCookie = new Cookie("user", "testuser");
Cookie themeCookie = new Cookie("theme", "dark");
driver.manage().addCookies(userCookie, themeCookie);

Requirements: Page must be loaded (driver.get("https://example.com")) before adding cookies.


2. Reading Cookies​

// Get single cookie by name
Cookie sessionCookie = driver.manage().getCookieNamed("sessionId");
String sessionValue = sessionCookie.getValue(); // "abc123"

// Get ALL cookies
Set<Cookie> allCookies = driver.manage().getCookies();
System.out.println("Total cookies: " + allCookies.size());

// Iterate and print
for (Cookie cookie : allCookies) {
System.out.println(cookie.getName() + " = " + cookie.getValue());
}

3. Deleting Cookies​

// Delete specific cookie
driver.manage().deleteCookieNamed("sessionId");

// Delete cookie by object reference
driver.manage().deleteCookie(sessionCookie);

// Delete ALL cookies
driver.manage().deleteAllCookies();

Cookie cookie = new Cookie("test", "value");
cookie.getName(); // "test"
cookie.getValue(); // "value"
cookie.getDomain(); // "example.com"
cookie.getPath(); // "/"
cookie.getExpiry(); // Expiry Date
cookie.isSecure(); // false
cookie.isHttpOnly(); // false

@Test
public void completeCookieTest() {
driver.get("https://example.com");

// 1. ADD cookies
driver.manage().addCookie(new Cookie("username", "testuser"));
driver.manage().addCookie(new Cookie("sessionToken", "xyz789",
".example.com", "/", 3600)); // domain, path, maxAge

// 2. READ cookies
Set<Cookie> cookies = driver.manage().getCookies();
assertEquals(2, cookies.size());

// 3. MODIFY - delete and re-add
driver.manage().deleteCookieNamed("username");
driver.manage().addCookie(new Cookie("username", "admin"));

// 4. Verify
Cookie newUserCookie = driver.manage().getCookieNamed("username");
assertEquals("admin", newUserCookie.getValue());

// 5. CLEANUP
driver.manage().deleteAllCookies();
}

// Complete Cookie constructor: name, value, domain, path, expiry, secure, httpOnly
Date expiryDate = new Date(System.currentTimeMillis() + 3600000); // 1 hour
Cookie authCookie = new Cookie("auth", "token123",
"example.com", "/secure",
expiryDate, true, true);
driver.manage().addCookie(authCookie);

Persistent Cookies (Save/Load Across Sessions)​

// SAVE cookies to file
Set<Cookie> cookies = driver.manage().getCookies();
String cookiesJson = new Gson().toJson(cookies);
Files.write(Paths.get("cookies.json"), cookiesJson.getBytes());

// LOAD cookies in new session
driver.get("https://example.com"); // Must navigate first
Type cookiesType = new TypeToken<Set<Cookie>>(){}.getType();
Set<Cookie> savedCookies = new Gson().fromJson(cookiesJson, cookiesType);
for (Cookie cookie : savedCookies) {
driver.manage().addCookie(cookie);
}
driver.navigate().refresh(); // Refresh to apply cookies

public class CookieManager {
public static void addAuthCookie(WebDriver driver, String token) {
driver.manage().addCookie(new Cookie("authToken", token,
".example.com", "/",
true, true));
}

public static String getSessionId(WebDriver driver) {
Cookie session = driver.manage().getCookieNamed("sessionId");
return session != null ? session.getValue() : null;
}

public static void clearAll(WebDriver driver) {
driver.manage().deleteAllCookies();
}
}

ScenarioCode
Bypass loginAdd session cookies before navigation
Test cookie-based authAdd/delete cookies, verify redirects
Persistent sessionsSave/load cookies between test runs
Domain/path testingSet specific domain/path in Cookie constructor

StorageSelenium MethodPersistence
Cookiesdriver.manage().addCookie()Browser session + expiry
LocalStorage((JavascriptExecutor)driver).executeScript("localStorage.setItem('key','value');")Persistent
SessionStorage((JavascriptExecutor)driver).executeScript("sessionStorage.setItem('key','value');")Tab session

Best Practices​

  1. Always navigate first: driver.get(url) before addCookie()
  2. Use proper domain: Include leading dot for subdomains (.example.com)
  3. Set realistic expiry: Use maxAge or expiry Date
  4. Secure & HttpOnly: Set true for production-like testing
  5. Cleanup: deleteAllCookies() in @AfterMethod
  6. Save sessions: Serialize cookies for login bypass in test suites

Quick Reference Table​

ActionMethod
Add cookiedriver.manage().addCookie(cookie)
Get alldriver.manage().getCookies()
Get onedriver.manage().getCookieNamed("name")
Delete onedriver.manage().deleteCookieNamed("name")
Delete alldriver.manage().deleteAllCookies()